#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <ctype.h>

void analyze_words() {
    std::string input_words;
    std::cout << "Введите несколько слов, разделенных пробелом: ";
    std::getline(std::cin, input_words);
    
    std::vector<std::string> words;
    size_t startPos = 0;
    size_t endPos = input_words.find(' ');
    while (endPos != std::string::npos) {
        words.push_back(input_words.substr(startPos, endPos - startPos));
        startPos = endPos + 1;
        endPos = input_words.find(' ', startPos);
    }
    words.push_back(input_words.substr(startPos, endPos));

    if (words.size() <= 1) {
        std::cout << "Мало данных для анализа" << std::endl;
    } else {
        size_t num_capital_cyrillic_chars = 0;
        size_t num_words_with_latin_chars = 0;
        size_t num_short_words = 0;
        size_t num_hyphen_words = 0;

        for (const std::string& word : words) {
            if (std::isupper(word[0]) && std::isalpha(word[0]) && std::tolower(word[0]) != word[0]) {
                num_capital_cyrillic_chars++;
            }

            if (std::any_of(word.begin(), word.end(), [](char c) { return std::isalpha(c) && isascii(c); })) {
                num_words_with_latin_chars++;
            }

            if (word.length() <= 3) {
                num_short_words++;
            }

            if (word.find('-') != std::string::npos) {
                num_hyphen_words++;
            }
        }

        std::cout << "Количество слов: " << words.size() << std::endl;
        std::cout << "Количество слов с заглавной кириллической буквы: " << num_capital_cyrillic_chars << std::endl;
        std::cout << "Количество слов, содержащих латинский символ: " << num_words_with_latin_chars << std::endl;
        std::cout << "Количество слов, не превышающих 3 символа: " << num_short_words << std::endl;
        std::cout << "Количество слов, в составе которых имеется дефис: " << num_hyphen_words << std::endl;
        std::cout << std::endl;

        std::string longest_word = *std::max_element(words.begin(), words.end(), [](const std::string& a, const std::string& b) {
            return a.length() < b.length();
        });

        std::cout << "Самое длинное слово: " << longest_word << std::endl;
        std::cout << "Длина слова: " << longest_word.length() << std::endl;
    }
}

int main() {
    analyze_words();
    return 0;
}
